package org.tuoren.official.service;

import jakarta.servlet.http.HttpServletResponse;
import org.tuoren.common.mybatis.core.page.PageQuery;
import org.tuoren.common.mybatis.core.page.TableDataInfo;
import org.tuoren.official.domain.bo.TNewsCenterBo;
import org.tuoren.official.domain.vo.TNewsCenterVo;

import java.io.IOException;
import java.util.Collection;
import java.util.List;

/**
 * 新闻中心配置Service接口
 *
 * @author Lion Li
 * @since 2024-11-26
 */
public interface ITNewsCenterService {

    /**
     * 查询新闻中心配置
     *
     * @param id 主键
     * @return 新闻中心配置
     */
    TNewsCenterVo queryById(Long id);

    /**
     * 分页查询新闻中心配置列表
     *
     * @param bo        查询条件
     * @param pageQuery 分页参数
     * @return 新闻中心配置分页列表
     */
    TableDataInfo<TNewsCenterVo> queryPageList(TNewsCenterBo bo, PageQuery pageQuery);

    /**
     * 查询符合条件的新闻中心配置列表
     *
     * @param bo 查询条件
     * @return 新闻中心配置列表
     */
    List<TNewsCenterVo> queryList(TNewsCenterBo bo);

    /**
     * 新增新闻中心配置
     *
     * @param bo 新闻中心配置
     * @return 是否新增成功
     */
    Boolean insertByBo(TNewsCenterBo bo);

    /**
     * 修改新闻中心配置
     *
     * @param bo 新闻中心配置
     * @return 是否修改成功
     */
    Boolean updateByBo(TNewsCenterBo bo);

    /**
     * 校验并批量删除新闻中心配置信息
     *
     * @param ids     待删除的主键集合
     * @param isValid 是否进行有效性校验
     * @return 是否删除成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 官网-获取新闻发布年份
     * @return 年份列表
     */
    TableDataInfo<Integer> getPublishYear();

    /**
     * 官网-获取新闻发布年份-新
     * @return 年份列表
     */
    TableDataInfo<Integer> getPublishYearNew();

    /**
     * 官网-获取新闻发布月份
     * @param year 年份（可空）
     * @return 月份列表
     */
    TableDataInfo<Integer> getPublishMonth(String year);

    /**
     * 官网-获取新闻发布月份
     * @param year 年份（可空）
     * @return 月份列表
     */
    TableDataInfo<Integer> getPublishMonthNew(String year);

    /**
     * 官网-新闻中心配置列表
     * @param newType   新闻类型
     * @param pageQuery 分页参数
     * @return 新闻中心配置分页列表
     */
    TableDataInfo<TNewsCenterVo> getPageList(String newType,PageQuery pageQuery);

    TableDataInfo<TNewsCenterVo> getPageListNew(String newType,PageQuery pageQuery);
    /**
     * 官网-获取新闻详细内容
     * @param id 新闻中心Id
     */
    TNewsCenterVo getNewById(Long id);

    /**
     * 官网-新闻中心轮播图
     */
    TableDataInfo<TNewsCenterVo> getTopList();

    /**
     * 官网-新闻、媒体动态详情-随机列表
     * @param newType 新闻类型
     * @param num 显示数量
     */
    TableDataInfo<TNewsCenterVo> getRandomList(String newType,Long num);

    /**
     * 官网-新闻、媒体动态详情-随机列表-新
     * @param newType 新闻类型
     * @param num 显示数量
     */
    TableDataInfo<TNewsCenterVo> getRandomListNew(String newType,Long num);

    void downLoadAnnex(Long newsId, Long ossId, HttpServletResponse response) throws IOException;

}
